Data Designer Extensibility (DDEX) allows software development tools to produce applications that interact with third party data sources. DDEX technology allows data providers to integrate with a software application development tool that is employed by programmers to create standalone applications, web sites, web applications, and/or web services.
A DDEX provider represents third party extensibility for data design time support and implements one or more support entities that represent contracts understood by code running in a software development tool. Support entities define different methods, with different parameters and specific types that have specific behaviors and implementations. A third party employs these method definitions and provides variants for a particular data source.
The implementation supplied by the provider represents the correct set of actions that can be performed for a given contract when designing against a particular data source. Since each data source has different characteristics, both syntactical and structural, they require a data source-specific DDEX provider. For example, supporting design-time operations against a relational database is different as compared to supporting operations against a proprietary database, or against a spreadsheet application, or against a CVS (comma-separated values) or XML (Extensible Markup Language) file and would require a different data provider.
The support entities cannot function without a provider's implementation. In conventional systems, client code that is trying to retrieve an implementation of a support entity from a provider would contain logic that determines a default implementation for each support entity. The client provided implementation would be employed if a provider does not supply a specific implementation. Thus, the client requires knowledge, then, of where and how to instantiate these various default implementations for every support entity in order to avoid an error when a provider fails to supply a specific implementation for a particular support entity. Furthermore, contracts can be defined by third parties or coded in the software development tool. Thus, it is difficult for a client employing one of these contracts to know what its default behavior should be.